PHP чтение файла, разница между file_get_contents, readfile, exec cat
На PHP прочитать данные из файла можно несколькими способами, разница между ними не всегда очевидна. Допустим есть файл readme.txt, прочитаем его тремя разными способами:
первый способ:
file_get_contents("readme.txt");
второй способ:
readfile("readme.txt");
третий способ:
exec("readme.txt");
Если измерить производительность то получим разницу в производительности только для вызова функции exec. За счет системного вызова медленнее встроенных решений примерно в 10 раз для одной операции.
У встроенных функци разница только в способе обработки данных.
file_get_contents() возвращает содержимое файла в строке, начиная с указанного смещения offset и до maxlen байт. В случае неудачи, file_get_contents() вернёт FALSE.
readfile - читает файл и записывает его в буфер вывода. Возвращает количество прочитанных из файла байт. В случае возникновения ошибки вернёт FALSE, и (если только функция не была вызвана как @readfile()) выведет сообщение об ошибке.
При простом чтении текстовых файлов - разницы нет, file_get_contents представит данные из файла в виде строки и они будут находиться в памяти.
readfile предварительно выведет в буфер вывода, но так как чаще всего присваивается значение какой-то переменной, то они тоже будут в памяти.
Разница в специфических задачах. Например, нужно прочитать файл не до конца, а только начало; получить данные по url, и т.п.
exec command лучше использовать когда все уже написано на bash и переработка на php не рациональна.
Официальная документация
http://www.php.net/manual/ru/function.readfile.php
http://www.php.net/manual/ru/function.file-get-contents.php
http://www.php.net/manual/ru/function.exec.php